package org.xmap.net;

import java.io.InputStream;
import javax.microedition.io.HttpConnection;

/**
 * Http监听器，用于监听Http连接的事件。
 * 
 * @author Zealot
 * 
 */
public interface HttpListener {

    /**
     * 是否以流的方式接收数据，如果是，则会回调onRecvingData函数，否则回调onRecvedData函数。
     * @return
     */
    public boolean isStreamMode();

    /**
     * 准备连接中。
     */
    public void onConnect();

    /**
     * 已经连接上了，并且已经获得了服务器的响应。
     * @param hc http连接对象。
     */
    public void onConnected(HttpConnection hc, int responseCode);

    /**
     * 已经连接上，并且开始接收数据。
     * @param contentLength 数据长度，其实就是Http头中的Content-Length属性。
     * @param is 数据输入流。
     */
    public void onRecvingData(int contentLength, InputStream is);

    /**
     * 已经连接上，并且已经接收到。
     * @param data 数据。
     */
    public void onRecvedData(byte[] data);

    /**
     * 有错误产生。
     */
    public void onError(String msg);
}
